/**
 * 驼峰转换中横线
 * @param str
 * @returns {string} 转换后的字符串
 */
export const humpToDash = (str: string): string => {
  return str.replaceAll(/([A-Z])/g, '-$1').toLowerCase()
}

/**
 * 驼峰转换下横线
 * @param str
 * @returns {string} 转换后的字符串
 */
export const humpToUnderline = (str: string): string => {
  return str.replaceAll(/([A-Z])/g, '_$1').toLowerCase()
}

/**
 * 下横转换线驼峰
 * @param str
 * @returns {string} 转换后的字符串
 */
export const underlineToHump = (str: string): string => {
  if (!str) return ''
  return str.replaceAll(/_(\w)/g, (_, letter: string) => {
    return letter.toUpperCase()
  })
}

/**
 * 中转换线驼峰
 * @param str
 * @returns {string} 转换后的字符串
 */
export const dashToHump = (str: string): string => {
  if (!str) return ''
  return str.replaceAll(/-(\w)/g, (_, letter: string) => {
    return letter.toUpperCase()
  })
}

/**
 * 将字符串的首字母大写
 * @param string
 */
export const capitalizeFirstLetter = (string: string): string => {
  return string.charAt(0).toUpperCase() + string.slice(1)
}

/**
 * 将字符串的首字母转换为小写。
 *
 * @param str 要转换的字符串
 * @returns 首字母小写的字符串
 */
export const toLowerCaseFirstLetter = (str: string): string => {
  if (!str) return str // 如果字符串为空，直接返回
  return str.charAt(0).toLowerCase() + str.slice(1)
}
